#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Langfuse 提示词管理使用示例
"""

from app_v3_with_prompt_management import LangfusePromptManager
import os

def setup_environment():
    """
    显示当前配置
    """
    print("✓ Langfuse 密钥已硬编码在代码中")
    print("  - Public Key: pk-lf-ea07ebae-8acb-4e55-8c74-10615512b4c3")
    print("  - Secret Key: sk-lf-4432bb59-ef86-47ed-a66e-ea916cbd8368")
    print("  - Host: https://langfuse-dev.chinabeego.com")
    
    print("✓ Dify 配置已硬编码在代码中")
    print("  - API Key: app-0PDgGG370Da8hMNlzK4k7jHT")
    print("  - API URL: https://dify-pre.chinabeego.com/v1")

def example_basic_usage():
    """
    基本使用示例
    """
    print("=== 基本使用示例 ===")
    
    # 初始化提示词管理器
    prompt_manager = LangfusePromptManager()
    
    # 1. 创建提示词
    print("\n1. 创建提示词...")
    customer_prompt = """
    你是 {company_name} 的客户服务代表。
    
    客户问题：{user_input}
    
    请按照以下要求回答：
    - 保持友好和专业
    - 提供准确信息
    - 如果无法回答，请引导客户联系相关部门
    - 回答要简洁明了
    """
    
    result = prompt_manager.create_prompt(
        name="customer-service-v1",
        prompt_content=customer_prompt,
        version="1.0.0",
        description="客户服务基础提示词"
    )
    
    if result:
        print("✓ 提示词创建成功")
    else:
        print("✗ 提示词创建失败")
    
    # 2. 获取提示词
    print("\n2. 获取提示词...")
    prompt = prompt_manager.get_prompt("customer-service-v1", "1.0.0")
    if prompt:
        print("✓ 提示词获取成功")
        print(f"提示词内容: {prompt.prompt[:100]}...")
    else:
        print("✗ 提示词获取失败")
    
    # 3. 列出所有提示词
    print("\n3. 列出所有提示词...")
    prompts = prompt_manager.list_prompts()
    print(f"找到 {len(prompts)} 个提示词")
    for p in prompts:
        print(f"  - {p.name} (版本: {p.version})")

def example_chat_usage():
    """
    聊天使用示例
    """
    print("\n=== 聊天使用示例 ===")
    
    prompt_manager = LangfusePromptManager()
    
    # 使用客户服务聊天
    print("\n1. 客户服务聊天...")
    try:
        response = prompt_manager.customer_service_chat(
            user_message="我想退货，但是已经超过7天了，还能退吗？",
            company_name="TechStore",
            session_id="example_session_001"
        )
        print(f"客户服务回复: {response}")
    except Exception as e:
        print(f"聊天失败: {e}")
    
    # 使用通用聊天方法
    print("\n2. 通用聊天方法...")
    try:
        response = prompt_manager.chat_with_prompt(
            prompt_name="customer-service-v1",
            user_message="你们的产品质量怎么样？",
            variables={
                "company_name": "TechStore", 
                "user_input": "你们的产品质量怎么样？"
            },
            session_id="example_session_002"
        )
        print(f"通用聊天回复: {response}")
    except Exception as e:
        print(f"通用聊天失败: {e}")

def example_prompt_management():
    """
    提示词管理示例
    """
    print("\n=== 提示词管理示例 ===")
    
    prompt_manager = LangfusePromptManager()
    
    # 1. 创建多个版本的提示词
    print("\n1. 创建多个版本的提示词...")
    
    # 版本 1.0
    prompt_v1 = """
    你是 {company_name} 的客服。
    客户问题：{user_input}
    请友好回答。
    """
    
    prompt_manager.create_prompt(
        name="multi-version-prompt",
        prompt_content=prompt_v1,
        version="1.0.0",
        description="多版本提示词 - 版本1"
    )
    
    # 版本 2.0
    prompt_v2 = """
    你是 {company_name} 的专业客户服务代表。
    
    客户问题：{user_input}
    
    回答要求：
    1. 保持专业和友好
    2. 提供准确信息
    3. 如果无法回答，请引导客户联系相关部门
    4. 回答要详细且有用
    """
    
    prompt_manager.create_prompt(
        name="multi-version-prompt",
        prompt_content=prompt_v2,
        version="2.0.0",
        description="多版本提示词 - 版本2"
    )
    
    # 2. 测试不同版本
    print("\n2. 测试不同版本...")
    
    # 使用版本 1.0
    try:
        response_v1 = prompt_manager.chat_with_prompt(
            prompt_name="multi-version-prompt",
            user_message="我想了解你们的退换货政策",
            variables={
                "company_name": "TechStore",
                "user_input": "我想了解你们的退换货政策"
            }
        )
        print(f"版本 1.0 回复: {response_v1}")
    except Exception as e:
        print(f"版本 1.0 测试失败: {e}")
    
    # 3. 更新提示词
    print("\n3. 更新提示词...")
    updated_prompt = """
    你是 {company_name} 的超级客服！
    
    客户问题：{user_input}
    
    请用最专业、最友好的方式回答！
    """
    
    result = prompt_manager.update_prompt(
        name="multi-version-prompt",
        prompt_content=updated_prompt,
        version="2.1.0",
        description="多版本提示词 - 更新版本"
    )
    
    if result:
        print("✓ 提示词更新成功")
    else:
        print("✗ 提示词更新失败")

def main():
    """
    主函数
    """
    print("Langfuse 提示词管理使用示例")
    print("=" * 50)
    
    # 检查环境变量
    setup_environment()
    
    # 基本使用示例
    example_basic_usage()
    
    # 聊天使用示例
    example_chat_usage()
    
    # 提示词管理示例
    example_prompt_management()
    
    print("\n" + "=" * 50)
    print("示例完成！")

if __name__ == "__main__":
    main()
